float h;
} sizes[4];
- if (widths[0] == widths[1] &&
- widths[0] == widths[2] &&
- widths[0] == widths[3] &&
- gdk_rgba_equal (&colors[0], &colors[1]) &&
- gdk_rgba_equal (&colors[0], &colors[2]) &&
- gdk_rgba_equal (&colors[0], &colors[3]))
+ if (gsk_border_node_get_uniform (node))
{
ops_set_program (builder, &self->programs->inset_shadow_program);
ops_set_inset_shadow (builder, transform_rect (self, builder, rounded_outline),
{
GskRenderNode render_node;
+ bool uniform: 1;
GskRoundedRect outline;
float border_width[4];
GdkRGBA border_color[4];
* Returns: (transfer full) (type GskBorderNode): A new #GskRenderNode
*/
GskRenderNode *
-gsk_border_node_new (const GskRoundedRect *outline,
- const float border_width[4],
- const GdkRGBA border_color[4])
+gsk_border_node_new (const GskRoundedRect *outline,
+ const float border_width[4],
+ const GdkRGBA border_color[4])
{
GskBorderNode *self;
GskRenderNode *node;
memcpy (self->border_width, border_width, sizeof (self->border_width));
memcpy (self->border_color, border_color, sizeof (self->border_color));
+ if (border_width[0] == border_width[1] &&
+ border_width[0] == border_width[2] &&
+ border_width[0] == border_width[3] &&
+ gdk_rgba_equal (&border_color[0], &border_color[1]) &&
+ gdk_rgba_equal (&border_color[0], &border_color[2]) &&
+ gdk_rgba_equal (&border_color[0], &border_color[3]))
+ self->uniform = TRUE;
+ else
+ self->uniform = FALSE;
+
+
graphene_rect_init_from_rect (&node->bounds, &self->outline.bounds);
return node;
}
+/** Private */
+bool
+gsk_border_node_get_uniform (GskRenderNode *self)
+{
+ return ((GskBorderNode *)self)->uniform;
+}
+
/*** GSK_TEXTURE_NODE ***/
struct _GskTextureNode